package com.zhou.framework.dao;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zhou.framework.aop.enums.LogLevelEnum;
import com.zhou.framework.util.EnumClassUtil;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * @author lang.zhou
 * @since 2023/2/18
 */
@Data
@TableName("sys_log")
public class Log implements Serializable {
    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 请求地址
     */
    private String url;
    /**
     * 请求方法；GET/POST
     */
    private String method;

    /**
     * 调用方法
     */
    private String classMethod;
    /**
     * 请求参数
     */
    private String parameter;
    /**
     * 系统响应
     */
    private String response;
    /**
     * 请求ip
     */
    private String ip;
    /**
     * 请求时间
     */
    private Date createDt;
    /**
     * 请求耗时
     */
    private Long spendTime;
    /**
     * 请求操作名称
     */
    private String description;
    /**
     * 用户id
     */
    private Integer userId;
    /**
     * 用户名称
     */
    private String username;
    /**
     * LogLevel
     */
    private Integer logLevel;

    @TableField(exist = false)
    private String logLevelName;
    /**
     * 状态
     */
    private String status;
    /**
     * 操作系统
     */
    private String os;
    /**
     * 浏览器
     */
    private String browser;
    private String location;
    /**
     * 0-同步,1-异步
     */
    private Integer type = 0;

    /**
     * 错误信息
     */
    private String errorMsg;

    public void setLogLevel(Integer logLevel) {
        this.logLevel = logLevel;
        this.logLevelName = EnumClassUtil.getName(LogLevelEnum.class,logLevel);
    }
}
